In a computer system, a program known as a compiler is utilized to translate software programs expressed in high order programming languages into their machine language equivalents. A processor then may execute the machine language to perform the operations designated by the software program. However, inefficiencies arise when using compilers due to the presence of instruction dependencies inherent with instructions in the extended static single assignment (SSA) form.
Instructions in the extended SSA form may suffer from having unnecessary data elements such as previous links that ‘link’ a portion of a particular instruction to a previously written instruction. In certain embodiments, a first plurality of instructions in the extended SSA form may contain multiple previous links that are essentially redundant to the extent that if instruction operands or sources were re-written, various previous links could be eliminated from the plurality of instructions.
By reducing instruction dependencies such as previous links in the extended SSA form, the updated plurality of instructions in the extended SSA form would have fewer constraints and therefore provide freedom for instruction scheduling and register allocation. For example, the reduction of instruction dependencies would allow non-sequential execution of instructions due to unnecessary previous links and further allow components of a given register to be assigned to different physical superword registers.
Therefore, a need exists for a compiler to identify and eliminate unnecessary instruction redundancies in an extended SSA form. A further need exists to re-write instruction operands to facilitate the process of reducing unnecessary instruction redundancies.